package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {

	router := gin.Default()

	// 此规则能够匹配/user/john这种格式，但不能匹配/user/ 或 /user这种格式
	router.GET("/user/:name", Params1)

	// 但是，这个规则既能匹配/user/john/格式也能匹配/user/john/send这种格式
	// 如果没有其他路由器匹配/user/john，它将重定向到/user/john/
	router.GET("/user/:name/*action", Params2)

	// 匹配的url格式:  /welcome?firstname=Jane&lastname=Doe
	router.GET("/welcome", Params3)

	router.POST("/from_post", Params4)

	router.Run()
}

func Params4(c *gin.Context) {
	message := c.PostForm("message")
	nick := c.DefaultPostForm("nick", "default")

	c.JSON(200, gin.H{
		"status":  "posted",
		"message": message,
		"nick":    nick,
	})
}

func Params3(c *gin.Context) {
	//不传递这个参数才有默认值
	fristname := c.DefaultQuery("firstname", "Guest")
	lastname := c.Query("lastname")
	// 是 c.Request.URL.Query().Get("lastname") 的简写

	c.String(200, "hello %s %s", fristname, lastname)
}

//url参数用param获取
func Params1(c *gin.Context) {
	name := c.Param("name")
	c.String(200, "hello %s", name)
}

func Params2(c *gin.Context) {
	name := c.Param("name")
	action := c.Param("action")
	message := name + " is " + action
	c.String(http.StatusOK, message)
}
